Package com.python.pydev.refactoring.search

Source Code of com.python.pydev.refactoring.search.FindOccurrencesSearchResultPage

/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.python.pydev.refactoring.search;

import java.lang.reflect.Field;
import java.util.Set;

import org.eclipse.search.ui.SearchResultEvent;
import org.eclipse.search.ui.text.AbstractTextSearchViewPage;
import org.eclipse.search.ui.text.Match;
import org.eclipse.search.ui.text.MatchEvent;
import org.python.pydev.core.log.Log;

import com.python.pydev.refactoring.refactorer.search.copied.FileSearchPage;

public class FindOccurrencesSearchResultPage extends FileSearchPage {

    private static boolean logged = false;

    /**
     * Handles a search result event for the current search result.
     *
     * @since 3.2
     */
    protected void handleSearchResultChanged(final SearchResultEvent e) {
        if (e instanceof MatchEvent) {
            try {
                //Don't you just HATE when the field you want is not accessible?
                //That's not really needed in eclipse 3.4 (as it'll already call the evaluateChangedElements), but
                //it should do no harm either.
                //
                //If postUpdate was protected, that'd be a good alternative too.
                Field field = AbstractTextSearchViewPage.class.getDeclaredField("fBatchedUpdates");
                field.setAccessible(true);
                Set set = (Set) field.get(this);

                MatchEvent matchEvent = ((MatchEvent) e);
                Match[] matches = matchEvent.getMatches();
                for (int i = 0; i < matches.length; i++) {
                    set.add(matches[i].getElement());
                }

                evaluateChangedElements(matches, set);
            } catch (Throwable e1) {
                if (!logged) {
                    logged = true; //just log it once.
                    Log.log(e1);
                }
            }
        }
        super.handleSearchResultChanged(e);
    }

}
TOP

Related Classes of com.python.pydev.refactoring.search.FindOccurrencesSearchResultPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.